(function () {
	var ns = ij.pkg('core').namespaceString;
	ij.core.Force = ij.core.Observable.extend({
		init: function (config) {
			return this._super(ij.apply({
				classname: ns + '.Force'
			}, config));
		},
		applyOn: function (gameObject) {
			return this;
		}
	});
	
	ij.core.GravityForce = ij.core.Force.extend({
		init: function (config) {
			return this._super(ij.apply({
				classname: ns + '.Force',
				g: 9.2
			}, config));
		},
		applyOn: function (gameObject) {
			gameObject.fY += gameObject.m * this.g / 100;
			return this;
		}
	});
	
	ij.core.InertionForce = ij.core.Force.extend({
		init: function (config) {
			return this._super(ij.apply({
				classname: ns + '.InertionForce',
				aX: 0.05,
				aY: 0.1
			}, config));
		},
		applyOn: function (gameObject) {
			gameObject.fX *= this.aX*gameObject.m;
			gameObject.fY *= this.aY*gameObject.m;
			return this;
		}
	});
	
})();
